package com.meeting.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.meeting.model.dto.bookingorder.BookingRequirementRequest;
import com.meeting.model.dto.meetingroom.MeetingRoomAddRequest;
import com.meeting.model.dto.meetingroom.MeetingRoomModifyRequest;
import com.meeting.entity.MeetingRoom;
import com.baomidou.mybatisplus.extension.service.IService;
import com.meeting.model.dto.meetingroom.MeetingRoomQueryRequest;
import com.meeting.model.dto.meetingroom.MeetingRoomStatusModifyRequest;
import com.meeting.model.vo.MeetingRoomAndDeviceList;
import com.meeting.model.vo.MeetingRoomAndStatusVO;
import com.meeting.model.vo.MeetingRoomRecommendVO;
import jakarta.validation.Valid;

import java.util.Date;

/**
* @author 25843
* @description 针对表【meeting_room(会议室表)】的数据库操作Service
* @createDate 2025-04-19 12:54:48
*/
public interface MeetingRoomService extends IService<MeetingRoom> {

    Boolean addMeetingRoom(@Valid MeetingRoomAddRequest meetingRoomAddRequest);

    Boolean modifyMeetingRoom(@Valid MeetingRoomModifyRequest meetingRoomModifyRequest);

    Boolean deleteMeetingRoom(Long meetingRoomId);

    Wrapper<MeetingRoom> getQueryWrapper(MeetingRoomQueryRequest queryRequest);

    Page<MeetingRoomAndStatusVO> queryMeetingRoom(Page<MeetingRoomAndDeviceList> page, MeetingRoomQueryRequest queryRequest);

    Boolean modifyMeetingRoomStatus(@Valid MeetingRoomStatusModifyRequest request);

    Page<MeetingRoomRecommendVO> recommendMeetingRooms(@Valid BookingRequirementRequest requirementRequest, long pageNum, long pageSize);

    MeetingRoomRecommendVO getMeetingRoomDetail(Long meetingRoomId);

    String getMeetingRoomUsedTime(Long meetingRoomId, Date date);
}
